package com.itheima.d7_threadpool;

import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ExecutorSerivceDemo1 {
    public static void main(String[] args) {
        //线程池
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,
                5,
                10,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.DiscardPolicy()
        );
        //使用线程池处理任务
        Runnable mc1 = new MyRunnable();
        pool.execute(mc1);//提交第1个线程任务 创建第一个线程 自动启动线程处理这个任务
        pool.execute(mc1);//提交第2个线程任务 创建第二个线程 自动启动线程处理这个任务
        pool.execute(mc1);//提交第3个线程任务 创建第三个线程 自动启动线程处理这个任务
        pool.execute(mc1);//进入到任务队列 等待线程处理
        pool.execute(mc1);//进入到任务队列 等待线程处理
        pool.execute(mc1);//进入到任务队列 等待线程处理
        pool.execute(mc1);//临时线程处理
        pool.execute(mc1);//临时线程处理
        pool.execute(mc1);//主线程处理
        pool.execute(mc1);//主线程处理

        List<Runnable> r = pool.shutdownNow();
        System.out.println(r.size());
    }
}
